package Testing;

import junit.framework.TestCase;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import Dominio.Dom_Fachada;
import Dominio.DominioException;
import Dominio.PerfilData;
import Dominio.Rol;
import Dominio.UserData;

public class CdU2 extends TestCase {

	private PerfilData perfil_cliente, perfil_trabajador;

	@Before
	public void setUp() throws Exception {
		perfil_cliente = new PerfilData(
				new UserData(10090909, "TEstClient", "ClientTest", "TEstTing",
						"Teting", 0f, "password", Rol.CLIENTE),
				"TestDirection", "somebody@somewhere.com", 3423432,
				"1956-02-02");
		perfil_trabajador = new PerfilData(new UserData(11090909, "TEstTraba",
				"TrabTest", "TEstTing2", "Teting2", 0f, "password",
				Rol.TRABAJADOR), "TestDirection", "somebody@somewhere.com",
				3423432, "1956-12-02");
		try {
			new Dom_Fachada().createCliente(perfil_cliente);
		} catch (DominioException e) {
		}
	}

	@After
	public void tearDown() throws Exception {
		try {
			new Dom_Fachada().deleteUser(perfil_cliente);
			new Dom_Fachada().deleteUser(perfil_trabajador);
		} catch (DominioException e) {
		}
	}

	@Test
	public void test() {
		/*
		 * Test CdU2: Login
		 */
		// Test1: Login del cliente
		try {
			PerfilData aux = new Dom_Fachada().loginUser("Teting", "password");
			assertTrue(aux.get_usuario().get_rol() == Rol.CLIENTE);
			assertTrue(aux.get_usuario().get_nick().equals("Teting")
					&& aux.get_usuario().get_pass().equals("password"));
		} catch (DominioException e) {
			fail("Error en el login cliente.");
		}
		// Test2: Login del trabajador.
		try {
			PerfilData aux = new Dom_Fachada().loginUser("Teting2", "password");
			assertTrue(aux.get_usuario().get_rol() == Rol.TRABAJADOR);
			assertTrue(aux.get_usuario().get_nick().equals("Teting2")
					&& aux.get_usuario().get_pass().equals("password"));
		} catch (DominioException e) {
			fail("Error en el login trabajador.");
		}
		// Test3: Login de un usuario que no existe.
		try {
			new Dom_Fachada().loginUser("Noexisto", "password");
			fail("Logueado un usuario que no existe.");
		} catch (DominioException e) {
		}
	}
}
